# 12.3 Four Implementations of Json
JFinal officially provides four implementations of the Json abstract class: JFinalJson, FastJson, Jackson, and MixedJson, which can meet most requirements.
# 1. JFinalJson
JFinalJson is the earliest implementation provided by JFinal. The most important feature of this implementation is that when converting a JFinal Model, it first gets the Map attrs attribute from the Model and then converts this Map object. Even if you have generated getter methods in your Model, they will not be called during conversion.
Several reasons for converting Model.attrs rather than using getter methods are:
A: Supports the conversion of multi-table join query results.
B: Early JFinal users did not generate getter methods for Model.
Note: JFinalJson only supports object-to-JSON-string conversion and does not support the reverse JSON-string-to-object conversion. You can use MixedJson to support reverse conversion: me.setJsonFactory(new MixedJsonFactory());.
# Advanced Features
Convert
ModelandRecordfield names to camel case:JFinalJson.setModelAndRecordFieldNameToCamelCase();1Skip null value fields during conversion:
JFinalJson.setSkipNullValueField(true);1Add custom
addToJsonextension methods:JFinalJson.addToJson(Timestamp.class, (value, depth, ret) -> { ret.addLong(((Timestamp)value).getTime()); });1
2
3
# 2. FastJson
FastJson is a wrapper around the third-party FastJson library. This implementation heavily depends on the getter methods of Model and Java beans. You can configure various FastJson conversion parameters according to its official documentation.
To use FastJson, you need to add its dependency:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.68</version>
</dependency>
2
3
4
5
# 3. Jackson
This implementation is similar to FastJson and is a wrapper around the third-party Jackson library.
To use Jackson, you need to add its dependency:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.0</version>
</dependency>
2
3
4
5
# 4. MixedJson
MixedJson is another wrapper around JFinalJson and FastJson. It uses JFinalJson for Object-to-JSON-string conversion and FastJson for JSON-string-to-Object conversion.
This implementation combines the advantages of both JFinalJson and FastJson. The former does not support JSON-string-to-Object conversion, while the latter does not support the conversion of dynamic fields in join table SQL queries.
To use MixedJson, you need to add the FastJson dependency:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.68</version>
</dependency>
2
3
4
5